app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
↳ QTRS
↳ Overlay + Local Confluence
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, x), z))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), y)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(cons, app(f, x)), app(app(map, f), xs))
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(filter2, app(f, x)), f)
APP(app(app(app(filter2, false), f), x), xs) → APP(filter, f)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(filter2, app(f, x)), f), x)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), y)), z)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), z)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(app(filter2, app(f, x)), f), x), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(app(app(filter2, true), f), x), xs) → APP(app(cons, x), app(app(filter, f), xs))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, x), y))
APP(app(app(app(filter2, true), f), x), xs) → APP(filter, f)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
APP(app(filter, f), app(app(cons, x), xs)) → APP(filter2, app(f, x))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(app(filter2, true), f), x), xs) → APP(cons, x)
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, app(app(:, x), y)), z)), u)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, app(app(:, x), y)), z))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(cons, app(f, x))
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, x), z))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), y)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(cons, app(f, x)), app(app(map, f), xs))
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(filter2, app(f, x)), f)
APP(app(app(app(filter2, false), f), x), xs) → APP(filter, f)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(filter2, app(f, x)), f), x)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), y)), z)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), z)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(app(filter2, app(f, x)), f), x), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(app(app(filter2, true), f), x), xs) → APP(app(cons, x), app(app(filter, f), xs))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, x), y))
APP(app(app(app(filter2, true), f), x), xs) → APP(filter, f)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
APP(app(filter, f), app(app(cons, x), xs)) → APP(filter2, app(f, x))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(app(filter2, true), f), x), xs) → APP(cons, x)
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, app(app(:, x), y)), z)), u)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, app(app(:, x), y)), z))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(cons, app(f, x))
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
APP(app(map, f), app(app(cons, x), xs)) → APP(app(cons, app(f, x)), app(app(map, f), xs))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), y)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), y)), z)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(filter2, app(f, x)), f), x)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), z)
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(app(app(filter2, app(f, x)), f), x), xs)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, x), y))
APP(app(app(app(filter2, true), f), x), xs) → APP(app(cons, x), app(app(filter, f), xs))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(filter, f), app(app(cons, x), xs)) → APP(filter2, app(f, x))
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, x), z))
APP(app(filter, f), app(app(cons, x), xs)) → APP(app(filter2, app(f, x)), f)
APP(app(app(app(filter2, false), f), x), xs) → APP(filter, f)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(app(filter2, true), f), x), xs) → APP(filter, f)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
APP(app(app(app(filter2, true), f), x), xs) → APP(cons, x)
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, app(app(:, app(app(:, x), y)), z))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, app(app(:, x), y)), z)), u)
APP(app(map, f), app(app(cons, x), xs)) → APP(cons, app(f, x))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(:, x)
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), y)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), y)), z)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), z)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, app(app(:, x), y)), z)), u)
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
:1(:(:(:(C, x), y), z), u) → :1(:(x, z), :(:(:(x, y), z), u))
:1(:(:(:(C, x), y), z), u) → :1(x, z)
:1(:(:(:(C, x), y), z), u) → :1(:(x, y), z)
:1(:(:(:(C, x), y), z), u) → :1(x, y)
:1(:(:(:(C, x), y), z), u) → :1(:(:(x, y), z), u)
:(:(:(:(C, x), y), z), u) → :(:(x, z), :(:(:(x, y), z), u))
:(:(:(:(C, x0), x1), x2), x3)
map(x0, nil)
map(x0, cons(x1, x2))
filter(x0, nil)
filter(x0, cons(x1, x2))
filter2(true, x0, x1, x2)
filter2(false, x0, x1, x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), y)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, x), y)), z)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, x), z)
APP(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → APP(app(:, app(app(:, app(app(:, x), y)), z)), u)
[:12, :2, C]
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(app(app(filter2, true), f), x), xs) → APP(app(filter, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(app(filter2, false), f), x), xs) → APP(app(filter, f), xs)
APP(app(filter, f), app(app(cons, x), xs)) → APP(f, x)
Used ordering: Combined order from the following AFS and order.
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
cons > [app2, map] > [filter2, true, filter, false]
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)
MAP(f, cons(x, xs)) → MAP(f, xs)
:(:(:(:(C, x0), x1), x2), x3)
map(x0, nil)
map(x0, cons(x1, x2))
filter(x0, nil)
filter(x0, cons(x1, x2))
filter2(true, x0, x1, x2)
filter2(false, x0, x1, x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
cons1 > MAP1
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ EdgeDeletionProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
app(app(:, app(app(:, app(app(:, app(app(:, C), x)), y)), z)), u) → app(app(:, app(app(:, x), z)), app(app(:, app(app(:, app(app(:, x), y)), z)), u))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(filter, f), nil) → nil
app(app(filter, f), app(app(cons, x), xs)) → app(app(app(app(filter2, app(f, x)), f), x), xs)
app(app(app(app(filter2, true), f), x), xs) → app(app(cons, x), app(app(filter, f), xs))
app(app(app(app(filter2, false), f), x), xs) → app(app(filter, f), xs)
app(app(:, app(app(:, app(app(:, app(app(:, C), x0)), x1)), x2)), x3)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(filter, x0), nil)
app(app(filter, x0), app(app(cons, x1), x2))
app(app(app(app(filter2, true), x0), x1), x2)
app(app(app(app(filter2, false), x0), x1), x2)